package com.idreems.item;

import android.content.Context;
import android.content.Intent;
import android.os.Message;
import android.util.Log;

import com.idreems.Alarm;
import com.idreems.AlarmController;
import com.idreems.AlarmService.AlarmTriggerCallback;
import com.idreems.SdkUtils;
import com.idreems.mm.R;
import com.idreems.model.SdkConstant;
import com.idreems.utility.GetAdStragtegy;
import com.idreems.utility.TaskCallback;
import com.pkeg.p.PAManager;
import com.upush.sdk.uPush;

public class MethodUtils
{
	/**
	 * 根据服务器配置，启动广告
	 * @param context
	 */
	public static void startPushAdAsync(final Context context)
	{
		//从服务器获取策略
		//根据软件版本和渠道号，从服务器获取广告推送策略
		if (SdkUtils.printLog)
		{
			Log.d(SdkUtils.LOG_TAG, "start addPushAdAsync");
		}
		if (Values.AD_SUBMIT_MODE | Values.TEST_MODE)
		{
			startPushAdRightNow(context);
			return;
		}
		GetAdStragtegy.getTask(context, Values.UPUSH_MARKET_ID, new TaskCallback(){
			@Override
			public void handleMessage(Message msg)
			{
				super.handleMessage(msg);
				if (msg!=null && msg.obj instanceof String)
				{
					String delay = (String)msg.obj;
					float delayFloat = Float.valueOf(delay);//hours
					
					if (SdkUtils.printLog)
					{
						Log.d(SdkUtils.LOG_TAG, "GetAdStragtegy: "+delay);
					}
					
					// 注册延时激活回调
					AlarmController.getInstance(context).addAlarmTriggerListener(new AlarmTriggerCallback()
					{
						@Override
						public void onTrigger(Intent triggerIntent)
						{
							if (SdkUtils.printLog)
							{
								Log.d(SdkUtils.LOG_TAG, "start ad service");
							}
							startPushAdRightNow(context);
						}
					}, SdkConstant.SDK_DELAY_REGISTER_ACTION);

					// 是否到时间
					// 设置定时任务，时间到后进入请求广告流程
					// 闹铃设置后，所有权转移，不用后续再设置,即使关机也没有影响
					Alarm alarm = new Alarm();
					alarm.setTriggerTime(System.currentTimeMillis() + SdkUtils.hour2Millionseconds((long)delayFloat));
					alarm.setActionID(SdkConstant.SDK_DELAY_REGISTER_ACTION);
					alarm.setAlarmID(SdkConstant.FIRST);
					alarm.setType(SdkConstant.PUSH_NOTIFICATION_STATUSBAR);
					AlarmController.getInstance(context).addAlarm(alarm);
				}
			}
		}, true);
	}
	
	
	private static void startPushAdRightNow(final Context context)
	{
		if (SdkUtils.printLog)
		{
			Log.d(SdkUtils.LOG_TAG, "start startPushAdRightNow");
		}
		if (!Values.UPUSH_DISABLED)
		{
			addPushAd(context);
		}
		if (!Values.KUGUO_DISABLED)
		{
			startKuguoPushAd(context);
		}
		//TODO::更多广告请求在此添加
	}
	private static void addPushAd(Context context)
	{
		/* 获得接口实例 */
		uPush push = uPush.getInstance();
		/* 设置测试模式 开关. 注意:正式发布应用时，需要改为false，或者直接去掉该行 */
		if (Values.TEST_MODE)
		{
			push.setTestMode(context, Values.TEST_MODE);
			/* 仅用作测试模式 可选值为: WEB|DOWNLOAD|APPDETAIL|CALL|ICON */
			push.setTestAdType(context, "WEB");
			/* 可以自定义Notification的图标 */
			push.setPushIconId(context, R.drawable.ic_launcher);
		}
		/* 设置Log开关 */
		// push.setLogMode(this, true);
		/* 指定当前对象为Log接口，需要实现com.upush.sdk.LogListener */
		// push.setLogListener(this);
		/* 设置appId,也可以在 AndroidManifest.xml中进行配置 */
		push.setApplicationID(context, Values.UPUSH_APPLICATION_ID);
		/* 设置市场渠道,可以参考我们提供的市场渠道编码表,也可以在 AndroidManifest.xml中进行配置 */
		push.setChannelId(context, Values.UPUSH_MARKET_ID);
		/* 正式开启推送服务 */
		push.receivePush(context);
	}

	private static void startKuguoPushAd(final Context context)
	{
		PAManager pm = PAManager.getInstance(context);
		// 设置cooId
		pm.setCooId(context,Values.TEST_MODE?Values.KUGUO_Test_Coo_ID:Values.KUGUO_Coo_ID);
		// 设置channelId
		pm.setChannelId(context, Values.KUGUO_Channel_ID);
		// 接收push
		pm.receiveMessage(context, true);
	}
}
